<template>
  <UploadExcel :on-success="onSuccess" />
</template>

<script>
import { importEmployee } from '@/api/employees'
export default {
  methods: {
    async onSuccess(data) {
      // excel 得到的数据是
      // const data = [
      //   {姓名: '王小山', 手机号: 13222222222, 工号: 10001},
      //   {姓名: '王中山', 手机号: 13222222223, 工号: 10002},
      //   {姓名: '王搭讪山', 手机号: 13222222224, 工号: 10003},
      // ]

      // 转换数据
      // 翻译
      // 字典
      const zidian = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber'
      }

      const newData = data.results.map(zhUser => {
        const enUser = {}
        for (const zhKey in zhUser) {
          const enKey = zidian[zhKey] // username
          const value = zhUser[zhKey] // 王小山
          // 这里本来直接翻译就行
          if (enKey === 'timeOfEntry' || enKey === 'correctionTime') {
            // 但是如果涉及到日期, 需要将 value 特殊转换
            // 1 用网上找到的函数转成日期字符串
            // 2 用 new Date 转成日期对象
            enUser[enKey] = new Date(this.formatExcelTime(value))
          } else {
            enUser[enKey] = value // {username: '王小山}
          }
        }
        return enUser
      })

      console.log('翻译后用户数组', newData)
      // 转换完毕真正发请求
      await importEmployee(newData)
      this.$message.success('导入成功')
      // 发完请求, 回退到上一页
      this.$router.back()
    },
    formatExcelTime(num, format = '-') {
      num = Number(num)	// 强制类型转化，以防传来的值是字符串
      let millisecond = 0	// 转化后的毫秒数
      if (num > 60) {
        millisecond = (num - 25569) * 60 * 60 * 24 * 1000
      } else {
        millisecond = (num - 25568) * 60 * 60 * 24 * 1000
      }
      const date = new Date(millisecond)	// 根据转化后的毫秒数获取对应的时间
      const yy = date.getFullYear()
      const mm = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
      const dd = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
      return yy + format + mm + format + dd	// 返回格式化后的日期
    }
  }
}
</script>

<style>

</style>
